package com.chaochis.wind.service;

import com.chaochis.wind.common_exceptions.not_exist_exception.AccountNotExistException;
import com.chaochis.wind.common_exceptions.not_exist_exception.UserNotExistException;
import com.chaochis.wind.enums.AccountType;
import com.chaochis.wind.vo.WindAccount;
import com.chaochis.wind.vo.WindUser;

import java.util.List;

public interface WindAccountService {
    /**
     * 获取所有的登录账户列表
     * @param windAccount 要查询的参数
     * @return 返回查询到的账户列表
     */
    List<WindAccount> getWindAccountList(WindAccount windAccount);

    /**
     * 通过用户名获取账号
     * @param accountName 用户名
     * @param accountType 账号类型
     * @return 返回找到的账户
     */
    WindAccount getWindAccountByAccountName(String accountName, AccountType accountType);

    /**
     * 通过id获取单个登录账号
     * @param accountId 账户id
     * @return 返回查询到的登录账号
     */
    WindAccount getWindAccountDetailByAccountId(String accountId);

    /**
     * 获取某个账号id绑定的wind用户信息
     * @param accountId 账号id
     * @return 绑定的wind用户信息
     */
    WindUser getBoundWindUser(String accountId);

    /**
     * 添加一个登录账户
     * @param windAccount 要添加的登录账户
     */
    void addWindAccount(WindAccount windAccount);

    /**
     * 更新某个登录账户的信息
     * @param windAccount 要更新的账户信息
     */
    void updateWindAccount(WindAccount windAccount);

    /**
     * 删除一个账户(包含物理删除与逻辑删除)
     * @param accountId 要删除的账户id
     */
    void deleteWindAccount(String accountId) throws AccountNotExistException;
    
    /**
     * 给账户绑定对应的用户
     * @param accountId 账户id
     * @param userId 要绑定的用户id
     */
    void setBindUser(String accountId, String userId) throws AccountNotExistException, UserNotExistException;
    
}
